package com.demo.java.OD1_50.OD13;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 高矮个子排队。【支持非法参数处理】。
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145509455
 */
public class OdMain {

    /**
     * 主方法，读取输入并进行排序，按规则处理奇偶位的大小关系。
     *
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        try (Scanner s = new Scanner(System.in)) {
            // 读取输入的数字串并拆分
            String lines = s.nextLine();
            String[] myBoys = lines.split(" ");
            int[] array = new int[myBoys.length];

            // 校验输入是否有效
            if (!isValidInput(myBoys)) {
                System.out.println("[]");
                return;
            }

            // 将输入的字符串数组转换为整数数组
            for (int i = 0; i < myBoys.length; i++) {
                array[i] = Integer.parseInt(myBoys[i]);
            }

            // 进行排序，奇数位大，偶数位小
            int index = 0;
            while (index + 1 < array.length) {
                if ((index + 1) % 2 == 0) {  // 偶数位（按1为基准的位次）应小
                    if (array[index] > array[index + 1]) {
                        swap(array, index, index + 1);  // 交换相邻元素
                    }
                } else {  // 奇数位（按1为基准的位次）应大
                    if (array[index] < array[index + 1]) {
                        swap(array, index, index + 1);  // 交换相邻元素
                    }
                }
                index++;
            }

            // 输出排序后的数组
            for (int i = 0; i < array.length; i++) {
                System.out.print(array[i] + " ");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 校验输入是否有效，检查每个元素是否为有效的整数。
     *
     * @param input 输入的字符串数组
     * @return 如果所有输入都是数字，则返回true；否则返回false
     */
    private static boolean isValidInput(String[] input) {
        for (String str : input) {
            try {
                Integer.parseInt(str);  // 尝试将字符串转换为整数
            } catch (NumberFormatException e) {
                return false;  // 如果转换失败，说明输入无效，返回false
            }
        }
        return true;  // 所有输入都是数字，返回true
    }

    /**
     * 交换数组中两个元素的位置
     *
     * @param array 数组
     * @param i     索引1
     * @param j     索引2
     */
    private static void swap(int[] array, int i, int j) {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

}
